﻿using System;

namespace InfiniTec.Exchange.Notifications
{
	/// <summary>
	/// Specifies which events to subscribe to on a mailbox folder or public folder.
	/// </summary>
	[Flags]
	public enum EventTypes
	{
		/// <summary>
		/// Equals zero. Not valid when creating a subscription.
		/// </summary>
		None = 0,
		/// <summary>
		/// Trigger a notification for newly created items.
		/// </summary>
		Created = 0x1,
		/// <summary>
		/// Trigger a notification when an item has been deleted.
		/// </summary>
        Deleted = 0x2,
		/// <summary>
		/// Trigger a notification when an item has been modified.
		/// </summary>
		Modified = 0x4,
		/// <summary>
		/// Trigger a notification when an item has been copied to a new folder.
		/// </summary>
		Copied = 0x8,
		/// <summary>
		/// Trigger a notification when an item has been moved to a new folder.
		/// </summary>
		Moved = 0x10,
		/// <summary>
		/// Trigger a notification when a new mail has been placed in a mailbox.
		/// </summary>
		NewMail = 0x20,
		/// <summary>
		/// Same as Created, Deleted, Modified, Copied, Moved and NewMail
		/// </summary>
		All = Created | Deleted | Modified | Copied | Moved | NewMail
	}

	/// <summary>
	/// Specifies which events to subscribe to on a mailbox folder or public folder.
	/// </summary>
	public enum EventType
	{
		/// <summary>
		/// Equals zero. Not valid when creating a subscription.
		/// </summary>
		None = 0,
		/// <summary>
		/// Trigger a notification for newly created items.
		/// </summary>
		Created = 0x1,
		/// <summary>
		/// Trigger a notification when an item has been deleted.
		/// </summary>
		Deleted = 0x2,
		/// <summary>
		/// Trigger a notification when an item has been modified.
		/// </summary>
		Modified = 0x4,
		/// <summary>
		/// Trigger a notification when an item has been copied to a new folder.
		/// </summary>
		Copied = 0x8,
		/// <summary>
		/// Trigger a notification when an item has been moved to a new folder.
		/// </summary>
		Moved = 0x10,
		/// <summary>
		/// Trigger a notification when a new mail has been placed in a mailbox.
		/// </summary>
		NewMail = 0x20,
		/// <summary>
		/// Status event for push notifications
		/// </summary>
		Status = 0x40
	}
}
